

from orders.models import OrderInfo
from meiduo_admin.custom_paginations import MyPage
from rest_framework.viewsets import ModelViewSet
from meiduo_admin.serializers.order_serializers import *


class OrderViewSet(ModelViewSet):
    queryset = OrderInfo.objects.all()
    serializer_class = OrderSimpleSerializer
    pagination_class = MyPage


    def get_queryset(self):
        keyword = self.request.query_params.get('keyword')
        if keyword:
            return self.queryset.filter(order_id__contains=keyword)
        return self.queryset.all()


    # 如何根据不同的请求使用不同的序列化器？！
    def get_serializer_class(self):
        """
        功能：指定操作数据所使用的序列化器
        :return: 序列化器
        """
        # 如果此次请求是 GET + /orders/pk/ = retrieve
        #        ---获得单一对象详细信息，使用OrderDetailModelSerializer
        # 如果此次请求是 GET + /orders/ = list
        #        ---获得多条数据，使用OrderSimpleSerializer

        # 如何判断出不同的请求呢？
        # 答：self.action属性指的是当次请求处理的视图函数名称
        if self.action == "retrieve" or self.action == "partial_update":
            # 此次接口请求的是单一订单的详细信息
            return OrderDetailModelSerializer

        if self.action == "list":
            # 此次接口请求的是多条订单数据返回
            return OrderSimpleSerializer

        return self.serializer_class